# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
#
# 注意：提示框架代码可以任意修改，以完成程序功能为准
'''
问题3 (5分) :在问题2的基础上，在PY301-3. py文件中修改代码，对键盘输入的每个序号做合法性处理。如果输入的数
字不不合法，请输出”输入星座编号有误!”，继续输出后续信息，然后重新回到输入序号的状态。
参考输入和输出示例格式如下:
请输入星座序号(例如,5): 5 14 11
双子座(9802)的生日是5月21日至6月21日之间
输入星座序号有误!
射手座(9808)的生日是11月23日至12月21日之间
请输入星座序号(例如, 5):
'''

# 打开文件
fp = open('PY301-SunSign.csv')
# 用来保存相应的信息
ls = []
for line in fp:
    ls.append(line.split(','))
'''
# 经过for循环分割之后的结果
[['序号', '星座', '开始月日', '结束月日', 'Unicode\n'], 
 ['1', '水瓶座', '120', '218', '9810\n'], 
 ['2', '双鱼座', '219', '320', '9811\n'],
 ......
 ['12', '魔蝎座', '1222', '119', '9809\n']]
'''
print(ls)
userInput = input('请输入星座序号(例如,5):').split(' ')
print(userInput)
'''
# 输入 5 10 之后 userInput中的内容
['5', '10']
'''
# 循环用户的输入
for i in userInput:
    # 输入的数字必须在 1 ~ 12 否则 输出'输入星座序号有误！' 并跳过本次循环
    if int(i) > 12 or int(i) < 1:
        print('输入星座序号有误！')
        continue
    # 在 ls 中查找结果
    for tmp in ls:
        # 判断是否找到相应的星座
        if i == tmp[0]:
            constellation = tmp[1]  # 星座
            # 去除换行符
            id = tmp[-1].strip('\n')  # Unicode编码
            # 观察文件中的开始日月 和 结束日月  可以得出 月份*100+日期 为最后的结果  因此我们拆分结果
            beginMonth = int(int(tmp[2]) / 100)  # 开始的月份
            beginDate = int(int(tmp[2]) % 100)  # 开始的日期
            endMonth = int(int(tmp[3]) / 100)  # 结束的月份
            endDate = int(int(tmp[3]) % 100)  # 结束的日期
            print("{}({})的生日是{}月{}日至{}月{}日之间".format(constellation, id, beginMonth, beginDate, endMonth, endDate))
